package cn.ligoo.part.web.springmvc.platform;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.util.WebUtils;

import cn.ligoo.part.domain.SysModAction;
import cn.ligoo.part.domain.SysModule;
import cn.ligoo.part.domain.UserInfo;
import cn.ligoo.part.service.impl.FacadeImpl;
import cn.ligoo.part.web.Constants;
import cn.ligoo.part.web.ControllerUtils;

@Controller
public class MainController {

	private final Logger logger = LoggerFactory.getLogger(PasswordController.class);

	@Resource
	private FacadeImpl facade;

	@RequestMapping(value = "/platform/main", method = RequestMethod.GET)
	public String main(HttpServletRequest request, Model model) {
		logger.debug("...main");

		UserInfo userInfo = (UserInfo) WebUtils.getSessionAttribute(request, Constants.SESSION_USER_INFO);
		List<SysModAction> sysModActionList = ControllerUtils.getSysModActionList(facade, userInfo);

		// 权限处理说明：
		// 如果用户 是is_admin=1，不需要判断授权，有全部权限
		// 如果sys_module表的数据行的is_public=1，不需要判断授权，对所有人可见
		// 最后一种，就要判断此用户对应的角色代码或用户(目前不支持)对此节点mod_code有无X权限，有无操作权限
		SysModule t = new SysModule();
		t.setMod_pcode(0); // 根节点
		t.setIs_del(Constants.BYTE_0);
		t.getMap().put("isHasPermissions", true); // 根目录不管怎么样，当然要有权限，不过这个属性不能放在t里，不然就作为查询条件了
		model.addAttribute("sysModuleList", ControllerUtils.getSysModuleList(facade, t, userInfo, sysModActionList));
		return "/platform/main";
	}
}
